package com.dzm;

import java.text.NumberFormat;

/**
 * 作者：Dzm
 * 时间：2024-07-26-18:50
 * 功能：
 */
public class Test02 {

    /**
     *  编写一个线程类，启动10条线程同时执行该类，要求输出效果如下所示（10分）
     * 001
     *  002
     *  003
     *  ….
     *  999
     * 输出001—999 每个线程要都有机会，而且不能重复而其有序
     *  分析：
     *      1.创建类实现Runnable接口
     *      2.设置一个count值用于计数
     *      3.在run方法中循环输出count，并在1000范围以内
     *      4.在循环中加上同步锁
     *      5.创建线程并执行
     * @param args
     */
    public static void main(String[] args) {
        //创建Runable对象
        MyThread myThread = new MyThread();

        //创建10个线程并启动
        for (int i = 0; i < 10; i++) {
            new Thread(myThread).start();
        }
    }
}


class MyThread implements Runnable {
    int count = 1;

    @Override
    public void run() {
        //数字转换
        NumberFormat nf = NumberFormat.getInstance();
        //设置最小长度为3位
        nf.setMinimumIntegerDigits(3);
        while (count < 1000) {
            //加锁
            synchronized (this) {
                if(count < 1000) {
                    System.out.println(Thread.currentThread().getName() + "：" +nf.format(count++));

                    //睡一段时间
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}